package com.halos.vista;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.JTree;

import com.halos.common.plugins.IntegraPlugins;
import com.halos.interfaz.vista.IObservador;
import com.halos.interfaz.vista.IPanel;

public class FrmPrincipal extends JFrame implements IObservador {

	private static final long serialVersionUID = 1L;
		
	private JToolBar tbrModulos;
	private JScrollPane scrModulos;
	private JTree treModulos;
		
	private JPanel pnlInferior;
	private JLabel lblProceso;
	private JProgressBar prcBarraProceso;
	
	private JMenuBar mnbPrincipal;
	private JMenu mnuSistema;
	private JMenu mnuAyuda;
	
	private JDesktopPane pnlPrincipal;
	
	private static FrmPrincipal principal = new FrmPrincipal();
    
    public static FrmPrincipal getInstanceFormPrincipal(){
        return principal;
    }
	
	private FrmPrincipal(){
		initComponentes();
	}
	
	private JTree cargarPluginPrueba(){
        return IntegraPlugins.getMenuOptions();
    }
	
	@Override
    public void atentoAlCambio(Object suceso) {
        JInternalFrame iframe = new JInternalFrame(((IPanel)suceso).getNombreFuncionalidad());
        iframe.add(((IPanel)suceso).getPanelVentana());
        iframe.setClosable(true);
        iframe.setSize(pnlPrincipal.getSize());
        pnlPrincipal.add(iframe);
        iframe.setVisible(true);
    }
	
	private void initComponentes(){
		
		setPreferredSize(new Dimension(800, 600));
		setMaximumSize(new Dimension(1200,720));
		setMinimumSize(new Dimension(600,400));
		setSize(800,600);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		mnuSistema = new JMenu("Sistema");
		mnuAyuda = new JMenu("Ayuda");
		mnbPrincipal = new JMenuBar();
		mnbPrincipal.add(mnuSistema);
		mnbPrincipal.add(mnuAyuda);
		setJMenuBar(mnbPrincipal);

		tbrModulos = new JToolBar();
		tbrModulos.setPreferredSize(new Dimension(225, 500));
		treModulos = cargarPluginPrueba();
		scrModulos = new JScrollPane(treModulos);
		tbrModulos.add(scrModulos);
		add(tbrModulos,BorderLayout.BEFORE_LINE_BEGINS);
		
		pnlInferior = new JPanel();
		pnlInferior.setLayout(new FlowLayout(FlowLayout.RIGHT));
		prcBarraProceso = new JProgressBar();
		lblProceso = new JLabel("[Proceso]");
		pnlInferior.add(lblProceso);
		pnlInferior.add(prcBarraProceso);
		add(pnlInferior,BorderLayout.SOUTH);

		pnlPrincipal = new JDesktopPane();
		add(pnlPrincipal,BorderLayout.CENTER);
	}
	
}
